package br.com.rotaestatistica.daos;

import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.List;

import br.com.rotaestatistica.entities.EstacaoEntity;
import br.com.rotaestatistica.utils.FabricaDeConexao;

public class EstacaoDAO extends FactoryDAO{

	public List<EstacaoEntity> selectAllEstacoesAsList() {
		List<EstacaoEntity> listaRetorno = new ArrayList<EstacaoEntity>();
		Statement stm = null;
        ResultSet rs = null;
		
		try{
			stm = FabricaDeConexao.getConexao().createStatement();
		
			String sql = "SELECT * FROM Estacao";
		
			rs = stm.executeQuery(sql);
		
		while (rs.next()){
			EstacaoEntity est = new EstacaoEntity();
			est.setId_Estacao(rs.getLong ("idEstacao"));
			est.setNome(rs.getString ("nome"));
			est.setSanitarios(rs.getBoolean("sanitarios"));
			est.setEstacionamento(rs.getBoolean ("acessibilidade"));
			est.setBicicletario(rs.getBoolean("bicicletario"));			
			
			listaRetorno.add(est);
		}
		}
		catch (SQLException e){
			e.printStackTrace();
		}
		finally{
			try{
				rs.close();
				stm.close();
				FabricaDeConexao.fechaConexao();
			}
			catch (SQLException e){
				e.printStackTrace();
			}
		}
		return listaRetorno;
	}

	public EstacaoEntity selectEstacaoById(long idEstacao) {
		EstacaoEntity est = new EstacaoEntity();
		PreparedStatement pstm = null;
        ResultSet rs = null;
		
        String sql = "SELECT * FROM Estacao where idEstacao =?";
		try{
			pstm = FabricaDeConexao.getConexao().prepareStatement(sql);
			pstm.setLong(1, idEstacao);
			
		
			rs = pstm.executeQuery();
		
		while (rs.next()){
			est.setId_Estacao(rs.getLong ("idEstacao"));
			est.setNome(rs.getString ("nome"));
			est.setSanitarios(rs.getBoolean("sanitarios"));
			est.setEstacionamento(rs.getBoolean ("acessibilidade"));
			est.setBicicletario(rs.getBoolean ("bicicletario"));			
		}
		}
		catch (SQLException e){
			e.printStackTrace();
		}
		finally{
			try{
				rs.close();
				pstm.close();
				FabricaDeConexao.fechaConexao();
			}
			catch (SQLException e){
				e.printStackTrace();
			}
		}
		return est;
	}
	
	/*
	public boolean insertEstacao(EstacaoEntity estacao) {

	}

	public boolean deleteEstacaoById(long idEstacao) {

	}

	public boolean updateEstacao(EstacaoEntity estacao) {

	}
*/
}
